#include "MenuPrincipal.h"
#include "PrincipalConstantes.h"
#include "ConstantesGlobais.h"
#include "Mensagens.h"

#include "Veiculo.h"
#include "Funcoes.h"

#include<iostream>

using namespace std;

using namespace entregadepedidos;
using namespace entregadepedidos::util::global;
using namespace entregadepedidos::util::funcoes;
using namespace entregadepedidos::entidades::menu;

using namespace entregadepedidos::entidades::veiculo;


ostream &operator<<(ostream &os, const Veiculo *veiculo){
	try{
		
		os << endl << ConstantesGlobais::GET_BARRA() << Funcoes::centralizaPalavra(veiculo->getPlaca(), 12)
			<< ConstantesGlobais::GET_BARRA() << Funcoes::centralizaPalavra(veiculo->getModelo(), 14)
			<< ConstantesGlobais::GET_BARRA() << Funcoes::centralizaPalavra(veiculo->getCor(), 12)
			<< ConstantesGlobais::GET_BARRA() << Funcoes::centralizaPalavra(veiculo->getCapacidade(), 8) << ConstantesGlobais::GET_BARRA();
		    	
	}catch(...){
		cout << "FODEU";
	}
	
	return os;				
}

/** Classe para executar o projeto
  *  Autor: Rafael Bueno
  *  Data: 31/05/2008
*/
int main() {
	
	try{
		
		//MenuPrincipal *menuPrincipal = new MenuPrincipal(4);
		//menuPrincipal->setTitulo(PrincipalConstantes::GET_CABECALHO());
		//menuPrincipal->adicionaItem(0, PrincipalConstantes::GET_MENU1());
		//menuPrincipal->adicionaItem(1, PrincipalConstantes::GET_MENU2());
		//menuPrincipal->adicionaItem(2, PrincipalConstantes::GET_MENU3());
		//menuPrincipal->adicionaItem(3, PrincipalConstantes::GET_MENU4());
		//menuPrincipal->getOpcao();
		Veiculo *v = new Veiculo("0001", "fusca", "azul",10);
		cout << v << endl;
		
		system(ConstantesGlobais::GET_PAUSE());
		
		
	}catch(MenuPrincipalException ex){
		system(ConstantesGlobais::GET_LIMPA_TELA());
		cerr << ex.getDescricao() << endl;
		system(ConstantesGlobais::GET_PAUSE());
		main();
	}catch(...){
		system(ConstantesGlobais::GET_LIMPA_TELA());
		cerr << Mensagens::GET_PRINCIPAL_ERRO_PERSONALIZADO() << endl;
		system(ConstantesGlobais::GET_PAUSE());
		main();
	}
	
	return 0;
	
}
